package org.example.myleet.p1052;

public class Solution {
    /**
     * 3 ms
     * 滑窗法，X即窗口长度
     */
    public int maxSatisfied(int[] customers, int[] grumpy, int X) {
        int n = customers.length, count = 0, maxCount = Integer.MIN_VALUE;
        for (int i=0; i<n; i++) {
            //初始化，当老板不用绝招控制情绪时，最多满意当顾客数
            if (grumpy[i] == 0) {
                count += customers[i];
            }
        }
        for (int i=0; i<X; i++) {
            //老板开始使用绝招，先初始化出窗口
            if (grumpy[i] == 1) {
                //老板控制情绪，可以使得窗口内原来生气的位置引起当不满意变成满意
                count += customers[i];
            }
        }
        maxCount = Math.max(maxCount, count);
        for (int i=X; i<n; i++) {
            if (grumpy[i] == 1) {
                //遍历整个过程，进入窗口的位置如果是生气的，则增加满意
                count += customers[i];
            }
            if (grumpy[i-X] == 1) {
                //退出窗口的位置如果是生气的，则满意减少
                count -= customers[i-X];
            }
            maxCount = Math.max(maxCount, count);
        }
        return maxCount;
    }
}
